#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#define N 4

int main()
{
    int i, id=0;
    for(i=1; i<4; i++)
    {
        if(fork() == 0) id=i;
    }
    fprintf(stderr, "#%d is process %ld with parent %ld\n", i, (long)getpid(), (long)getppid());
    wait(NULL);
    return 0;
}

// int main()
// {
//     int pid;
//     int a = 10;
//     if(!(pid != vfork()))
//     {
//         a+=100;
//         printf("a=%d\n",a);
//         exit(0);
//     }
//     else
//     {
//         printf("a=%d\n",a);
//     }
//     return 0;
// }


// int main()
// {
//     int a = 1;
//     printf("vfork前, a: %d\n", a);
//     pid_t id = fork();
//     if(id == 0)
//     {
//         // 子进程
//         a = 5;
//         printf("I am child process, a: %d\n", a);
//         _exit(0); 
//     }
//     else if(id > 0)
//     {
//         // 父进程
//         a = 10;
//         printf("I am father process, a: %d\n", a);
//     }
//     else 
//     {
//         printf("vfork失败\n");
//     }
//     return 0;
// }



// int main()
// {
//     pid_t id = fork();
//     if (id == 0)
//     {
//         // 子进程
//         while (1)
//         {
//             printf("I am a child process\n");
//             sleep(1);
//         }
//     }
//     // 父进程
//     while (1)
//     {
//         printf("I am a father process\n");
//         sleep(1);
//     }
//     return 0;
// }
